Dokumentation der Assemblierung
-------------------------------
1) Aufbau der Zeileninfotabelle (jeweils 10 Bytes):
Offset          Inhalt
  0.w           Lnge des Opcodes
  2.w           Flagword fr Operator
  4.w           Flagword fr Operand
  6.w           Index des Symbols, das in der Zeile definiert ist,
                sonst gleich $FFFF
  8.b           Fehlernummer
  9.b           Lnge des Remarks

2) Beschreibung des Flagwords
     Bits       F E D C B A 9 8 7 6 5 4 3 2 1 0

         Zahl:  0 0 0 0 0 0 0 0 0 0 0 0 c d d d
 Quickoperand:  1 1 -----Symbolindex-----------
     d(An,Xi):  1 0 H-Nib-Index a c 0 0 EOffset    Low-Byte=(A6+EOffset)
Registerliste:  1 0 0 0 0 0 0 0 0 0 0 1 EOffset    Index=(A6+2)
Symbol/Formel:  0 0 0 0 0 0 0 1 a c b b EOffset    Index=(A6+EOffset)

        a: 1=PC-relativ
        b: Breite: 00=Byte, 01=Word, 10=Long
        c: Vorzeichen: 0=Plus, 1=Minus
        d: Darstellungsart: 000=Dezimal, 001=Hex, 010=Binr, 011=reserviert
                            100="Ascii", 101='Ascii'
                            110="String", 111='String'
  EOffset: Einsetzoffset relativ zum Befehlsanfang
  H-Nib-Index: High-Nibble des Symbolindex
  Symbolindex: 14-Bit-Symbolindex

3) Aufbau der Eintrge in der Tabelle
        Symbol:
        0.l : Wert
        4.b : Flags (Bit7=1 -> defined, Rest wie Flags bei Standardsymbol-
                                                              tabelle)
        5.b : Typflag ($00=Label,$FF=Konstante,$FE=EQU-Konstante,
                       $01=Registerliste)
        6.b : Bit7=1 -> doppelte Deklaration, Rest unbenutzt
        7.b : unbenutzt
     8-30.b : Symbolname (23 Zeichen)
       31.b : $00 (Kennung fr Symboleintrag)

        Formel:
        0.l : Wert
        4.b : Flags (Bit7 immer 1(defined), Rest unbenutzt)
        5.b : Typflag ($00=Label,$FF=Konstante)
     6-30.w : Formeltoken
              Bit 15-14: Anzahl ')'
              Bit 13-12: Anzahl '('
              Bit 11-8 : Rechenoperation(0='+',1='-',2='|',3='^',
                         4='<<',5='>>',6='*',7='/',8='&',9='%',
                         10='=',11='<',12='>',13='<=',14='>=',15='<>'
              Bit 7 : Symbolflag
              Bit 6 : Longflag
              Bit 5 : Flag fr '!'
              Bit 4 : Flag fr '~'
              Bit 3 : Vorzeichen
              Bit 2-0: Darstellung der Zahl(bei Symbol null)
              es folgt ein Word(Bit6=0) oder ein Long(Bit6=1), das den
              Wert bzw. den Index enthlt
              interne Variablen haben folgenen Index:
                $8000: *
                $8008: ^^DATE
                $8010: ^^TIME
                $8018: ^^RSCOUNT
                $8020: ^^RANDOM
                $8028: ^^SYMTAB

       31 b : $FF (Kennung fr Formeleintrag)

        DC-Eintrag:
     0-29 w :   Flagwords fr DC-Zeile
                Bit 15=1 dann
                Bit 14  : Vorzeichen
                Bit 13-0: Symbol-oder Formelindex

                Bit 15=0 dann
                Bit 3-0: Darstellungsflag fr Zahl
                Sonderfall unteres Byte =$FF, dann
                Bit 13-8: Highbyte Indexnummer
                Bit 15-8 des folgenen Words: Lowbyte Indexnummer des
                                                Folgeeintrags
       31 b :   $FE (Kennung fr DC-Eintrag)

        IBYTES-Eintrag:
        0.l : Anzahl der Bytes
        4.l : Position
        8.l : tatschliche Lnge (wird whrend der Assemblierung ermittelt)
    12-30.b : Filename
       31.b : $FB (Kennung fr Sonstiges)

        OUTPUT und PATH-Eintrag:
     0-29.b : Pfad-/Filename
       31.b : $FC

        GLOBAL-Eintrag:
     0-29.w : Indizes der Symbole, die als global erklrt werden sollen
              (die Liste wird durch ein $80(bzw.$FA)-Byte abgeschlossen)
       31.b : $FA
        
4) Codierung der Pseudoopcodes:
   (Angegeben sind jeweils die relevanten Bytes im Zeileninfo)

        DC: llll $020x iiii
   llll: Anzahl der Bytes (wenn ungerade wird aufgerundet)
   iiii: Index des DC-Eintrags (bei DC.B ist Bit7 gesetzt, wenn Anzahl
                                       ungerade)
      x: 0=.B, 1=.W, 2=.L 

        DS: 0004 04xx wwww   Fllwert steht im Programmcode (Long)
   wwww: Anzahl (Zahl oder Index(bei Konstante/Formel))
   xx: Bit7-6: Breite: 00=Byte,01=Word,10=Long
       Bit5-4: 00=Dez,01=Hex,10=Bin,11=Konstante/Formel
       Bit 3 : Vorzeichen Fllwert (1=Minus)
       Bit2-0: Darstellung Fllwert (000=Dez,001=Hex,010=Bin
                                     100="Ascii",101='Ascii')

        TEXT: 0000 06xx
        DATA: 0000 08xx
        BSS:  0000 0Axx
        EVEN: 0000 0Cxx
   xx: wird bei der Assemblierung auf $FF gesetzt, wenn begradigt wurde

        EQU: 0000 0E00 000d ssss
   ssss: Index des Symbols, das in der Zeile definiert ist
      d: Darstellungsflags fr die Zahl(bereits in der Tabelle eingetragen)
        Hinweis: EQU-Eintrge mit Wert erhalten $FE als Kennung
 
             0000 0E01 iiii ssss
   iiii: Index der Formel/Symbol (oberen beiden Bits gesetzt)

        OPT: 0000 1000 xxxx

        RS.x: 0000 18xx wwww
   wwww: Wert oder Index auf Symbol/Formel
     xx: Bit 3-0: 0000=Dez
                  0001=Hex
                  1111=Index
         Bit 5/4: 00=.B
                  01=.W
                  10=.L

        RSSET: 0000 1Axw wwww
  wwwww: Wert oder Index
      x: Bit 3=Vorzeichen
         Bit 2=1 -> Index
         Bit 0 Darst. (0=Dez,1=Hex)

        REG: 0000 1C00 0000 ssss
   ssss: Index des Registerlistensymbols

        IBYTES: 0000 1Exx iiii
   iiii: Index des IBYTES-Eintrags
      x: 0=Dez/1=Hex

        BASE: 0000 20xx iiii
   iiii: Index des Labels, oder wenn negativ:
                $8000: * 
                $8002: OFF
                $8006: TEXT
                $8008: DATA
                $800A: BSS
      xx: 0=A0 ... 7=A7, 8=DC.W, 9=DC.B

        PATH: 0000 2200 iiii
   iiii: Index des PATH-Eintrags

        CNOP: 0000 24aa oooo
   oooo: 16 Bit Offset
     aa: 8 Bit Alignment

        OUTPUT: 0000 2600 iiii
   iiii: Index auf OUTPUT-Eintrag

        IF: 0000 28xx iiii
   iiii: Index des Symbols/der Formel(oberstes Bit wird bei Assemblierung
                                      gesetzt, wenn Bedingung wahr)
     xx: 0=IF, 2=IFEQ, 4=IFNE, 6=IFGT, 8=IFGE, A=IFLT, C=IFLE, E=IFD,
         10=IFND

        ELSE: 0000 2A00 0000

        ENDC: 0000 2C00 0000

        RSEVEN: 0000 2E00 0000

        DX.B: 0000 3000 iiii
   iiii: Index des Strings

        DXSET: 0000 32xx llww
     ww: Fllwert
     ll: Lnge
     xx: Bit 3-0 Darst. Fllwert
         Bit 4 Darst. Lnge (0=Dez/1=Hex)

        DCB.x: 0000 34xx wwww
            - siehe DS.x -

        FAIL: 0000 3600 iiii
   iiii: Index des des Eintrags, wenn kein Text =$FFFF

        ORG: 0004 380y 000x
      x: Bit 0: 0=Dez/1=Hex
      y: Bit 0: 1=",^" angegeben
      Die Adresse liegt im Programmspeicher (Langwort)

        SET: 0000 3A00 iiii ssss
    ssss: Index des Symbols, dem der Wert zugewiesen werden soll
    iiii: Index des Formeleintrags

        REPT: 0000 3C0d wwww
   wwww: Wert oder Index
      d: 0=Dez, 1=Hex, 15=Index

        ENDR: 0000 3E00

        SWITCH: 0000 4000 iiii
   iiii: Index der Formel

        CASE: 0000 42xx wwww
   wwww: Wert
     xx: Bit 7=1, wenn kein Wert folgt
         Bit 3= Vorzeichen
         Bit 2-0 Darst. des Werts

        ENDS: 0000 4400

        GLOBAL: 0000 4600 iiii
   iiii: Index des Eintrags mit den Symbolindizes

        COMMON: 0000 4800 iiii ssss
   ssss: Index des zu definierenden Symbols
   iiii: Index der Formel

        DEFAULT: 0000 4A00 wwww
   wwww: Buttonnummer (0-12)          

